//: C20:WordSet.cpp
// From Thinking in C++, 2nd Edition
// Available at http://www.BruceEckel.com
// (c) Bruce Eckel 1999
// Copyright notice in Copyright.txt
#include "../require.h"
#include <string>
#include <fstream>
#include <iostream>
#include <set>
using namespace std;

int main(int argc, char* argv[])
{
    requireArgs(argc, 1);
    ifstream source(argv[1]);
    assure(source, argv[1]);
    string word;
    set<string> words;
    while (source >> word)
        words.insert(word);
    copy(words.begin(), words.end(),
         ostream_iterator<string>(cout, "\n"));
    cout << "Number of unique words:"
         << words.size() << endl;
} ///:~
